package luccy.desc;

import java.lang.annotation.ElementType;
import java.util.List;

public interface BeanDesc<T> extends Desc {

	Class getComponentClass();

	ClassDesc<T> getClassDesc();

	List<AnnotationDesc> getAnnotationDescList(ElementType type, Desc desc);

	PropertyDesc getPropertyDesc(String propertyName);

	MethodDesc getMethodDesc(String methodName);

	List<MethodDesc> getMethodDescs(String methodName);

	T newInstance(Object... args);
	
	List<PropertyDesc> getAllPropertyDesc();
	
	List<MethodDesc> getAllMethodDesc();
}
